簡體   English   中英

帶Typescript的javascript函數中的Angular Scope

[英]Angular Scope in javascript function with Typescript

我將Typescript與Angular和Breezejs一起使用。

class CounterController {
    count: number = 0;
    static $inject = ['$scope'];


    constructor($scope) {
        $scope.vm = this;
    }

    setCount14(): void {  
        this.count = 14; // works
    }

    getQuestions(): void {
        var manager = new breeze.EntityManager('/breeze/dbentities');
        var query = breeze.EntityQuery.from("Corporations").where("Name", "startsWith", "Zen");
        manager.executeQuery(query)
            .then(querySucceeded);

        function querySucceeded(data) {
            this.count= 1; // works not!
        }
    }
}

我如何才能正確訪問querySucceeded函數中的count屬性?

編輯:更好:必須有一種方法可以將Typescript函數傳遞給executeQuery(query).then

解決方案:將Typescript函數作為Javascript函數傳遞

然后調用scope.$apply()會應用綁定。

使用(data) => { this.count = 1; } (data) => { this.count = 1; } 否則您的“ this”將沒有正確的范圍。 或作為替代:

var me = this;
function querySucceeded(data) {
  me.count= 1; // works not!
} 

例如:

getQuestions(): void {
    var manager = new breeze.EntityManager('/breeze/dbentities');
    var query = breeze.EntityQuery.from("Corporations").where("Name", "startsWith", "Zen");
    manager.executeQuery(query)
        .then((data) => { this.count= 1; });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM