【问题标题】:Store value from model in a property将模型中的值存储在属性中
【发布时间】:2016-05-19 22:46:22
【问题描述】:

我有一个输入字段:

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

我想将输入值返回到 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 字段中?

【问题讨论】:

  • 您可以使用 ng-change 并调用您的函数集来更新 _query

标签: angularjs typescript


【解决方案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";
...

那么缺少元素 sn-p 的问题 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}" />

【讨论】:

  • 看起来不错。您不必将query 设置为参数,因为数据是通过get/set 而不是函数的参数query 传递的。对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 2019-03-18
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 2015-04-19
相关资源
最近更新 更多