0

我将 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!
        }
    }
}

如何正确访问函数count中的属性querySucceeded

编辑:更好:必须有一种方法可以将打字稿函数传递给executeQuery(query).then

解决方案:将 Typescript 函数作为 Javascript 函数传递

然后调用scope.$apply()确实应用绑定。

4

1 回答 1

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; });
}
于 2013-07-25T07:48:09.383 回答