0

私は Angular と Breezejs で Typescript を使用しています。

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 関数を?に渡す方法が必要です。

解決策: Typescript 関数を Javascript 関数として渡す

次に、 を呼び出すとscope.$apply()バインディングが適用されます。

4

1 に答える 1

1

代わりに使用(data) => { this.count = 1; }します。または、「これ」に正しいスコープがありません。または代替として:

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 に答える