可以为$ scope使用if / else语句。$ watch?

时间:2013-08-03 12:38:24

标签: javascript angularjs

我正在玩Angular并试图查看以上是否可行。

<div ng-controller="Ctrl">
    <input ng-model="name">
    <h1>{{name}}</h1>
    <h1>{{age}}</h1>
</div>
var Ctrl = function($scope) {
    $scope.name = "Kevin"
    $scope.age = "26"

    $scope.$watch('name', function() {
        if($scope.name = 'Bob') {
            $scope.age = '101';
        };
    });
};

但是,这样做只会将name的值设置为“Bob”而不是“Kevin”。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

尝试在此行中使用==代替=if($scope.name = 'Bob') {
:)

答案 1 :(得分:2)

这是您正在寻找的内容尝试此plunker

   $scope.$watch('name', function(newval,old) {
 //  alert(old + newval)
if (newval == 'Kevin') {
  $scope.age = 99;
} else if (newval == 'Bob') {
  $scope.age = 101;
}

})

尝试将输入值从Kevin更改为Bob,反之亦然,以进行更改

答案 2 :(得分:1)

watch函数内的回调应该采用如下参数:

$scope.$watch('name', function(newName) {
  if (newName == 'Kevin') {
    $scope.age = 99;
  } else if (newName == 'Bob') {
    $scope.age = 101;
  }
})

以下是plunker:http://plnkr.co/edit/kTOXrSfRTXE7HCUsZfh2?p=preview
在“Bob”和“Kevin”之间更改$scope.name会影响$scope.age