使用Typescript的javascript函数中的Angular Scope

Angular Scope in javascript function with Typescript

本文关键字:Angular Scope javascript Typescript 使用 函数      更新时间:2023-09-26

我将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; }。否则你的"this"就没有正确的范围。OR作为替代方案:

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; });
}