将模型中的值存储在属性中

时间:2016-05-19 13:52:19

标签: angularjs typescript

我有一个输入字段:

Name: <input ng-model="query"
             ng-change="vm.returnQuery(query)" 
             ng-model-options="{debounce: 1000}" />

我想将inputvalue返回到console.log

在我的打字稿类中,我有这个字段

_query: string;

这些获取/设置属性:

get query() {
    return this._query
}

set query(value: string) {
    this._query = value;
}

这个功能,

returnQuery(query) {
    console.log('Query: ' + this._query + ' ' + query);
}

当我在输入中输入类似something的值时,控制台日志会返回:

  

查询:未定义的内容

那么如何将模型中的值通过get / set传递给_query字段?

1 个答案:

答案 0 :(得分:1)

很高兴看到更多代码,但是我们希望您的控制器(vm)定义如下:

export class myController
{
    static $inject = ["$scope"];
    constructor(protected $scope){
    }

    _query: string;
    get query() {
        return this._query
    }

    set query(value: string) {
        this._query = value;
    }   

    returnQuery(query) {
        console.log('Query: ' + this._query + ' ' + query);
    }
}

如果此控制器已分配给带有设置的指令

...
controller = myController;
controllerAs = "vm";
...

然后,元素片段的问题缺少 vm

// instead of this
<input ng-model="query" 
    ng-change="vm.returnQuery(query)" 
    ng-model-options="{debounce: 1000}" />

// bind this way
<input ng-model="vm.query" 
    ng-change="vm.returnQuery(vm.query)" 
    ng-model-options="{debounce: 1000}" />