$ watch或ng-model绑定问题?

时间:2015-06-29 08:12:51

标签: javascript angularjs

我基本上有一组非常复杂的选项卡,带有各种输入控件,但现在暂不用担心。现在让我们考虑简单的输入密码问题,我感到困惑。

例如:

<input type="text" placeholder="Associate some tags please" data-ng-model="tag" data-ng-maxlength="250">

我试图检测用户是否在我的输入中输入了一些内容:

$scope.$watch('tag', function () {
//$scope.$watchCollection('tag', function () {
    console.log('tag changed');
});

但我似乎没有回应。但是,当我执行保存操作时,我似乎总是得到用户键入的值。

ng-model是否无法正确绑定,或者我是不是$watch正确绑定了它?

在我执行保存操作后,我尝试清除用户输入的标签:

$scope.tag = '';

但是,由于$scope.tag并不存在,似乎无法正常工作。

PS:当我说保存操作时,我实际上是在一个对象中执行array.push(),后来由服务保存。

例如:

$scope.checkSaveTag = function (tag) {
    ...
    // checked for duplicate tag beforehand
    $scope.myForm.Tags.push(tagObj); // complicated form object
    $scope.tag = ''; // tag input control
    ...
};

2 个答案:

答案 0 :(得分:1)

标签是对象还是数组的可能性?如果是这种情况,你需要做一个深刻的$ watch,例如:

$scope.$watch('tag', function () {
    console.log('tag changed');
}, true);

答案 1 :(得分:1)

试试这个

控制器

$scope.form={
 tag:''
}

$scope.$watch("form.tag",function(newVal,oldVal){
  console.log(newVal);
})

<强> HTML

<input type="text" placeholder="Associate some tags please" data-ng-model="form.tag" data-ng-maxlength="250">