加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – $watch不触发数据更改

发布时间:2020-12-17 08:54:37 所属栏目:安全 来源:网络整理
导读:我有一个手表设置反对ui-select2下拉(从ui-bootstrap)的模型。手表在载入时触发,但不是数据更改,我不知道为什么。 这不是通常的问题不应用模型更改或不使用第三个参数进行相等比较(至少从我的代码)。 我需要做什么来让它开火? Here is a plunk demonstrat
我有一个手表设置反对ui-select2下拉(从ui-bootstrap)的模型。手表在载入时触发,但不是数据更改,我不知道为什么。

这不是通常的问题不应用模型更改或不使用第三个参数进行相等比较(至少从我的代码)。

我需要做什么来让它开火?

Here is a plunk demonstrating the issue.

我修复了一些东西。

http://plnkr.co/edit/5Zaln7QT2gETVcGiMdoW?p=preview

JS

var myMod = angular.module("myApp",[]).controller("MainController",function($scope){
  $scope.myModel = {selectedId:null};
}).controller("DetailController",function($scope){
  $scope.items = [1,2,3,4];

  $scope.watchHitCount = 0;
  $scope.$watch('myModel.selectedId',function(newVal,oldVal){
    console.log(newVal + " " + oldVal);
    $scope.watchHitCount++;
  },true);
});

index.html

<body ng-app="myApp">
    <div ng-controller="MainController">
      <ng-include src="'detail.html'" ng-controller="DetailController"></ng-include>
    </div>
  </body>

detail.html

<pre>watch hit: {{watchHitCount}}</pre>
<pre>selected value: {{myModel.selectedId}}</pre>
<select ng-model="myModel.selectedId" ui-select2="">
  <option></option>
  <option ng-repeat="item in items" value="{{item}}">{{item}}</option>
</select>

它抱怨没有找到控制器,所以我设置它的方式,我通常将使用一个命名的ng-app和一个模块声明已定义了控制器。

我还添加了一个对象来保存你的模型中的值。使用$ scope对象作为模型是不好的做法,相反,scope应该引用一个是你的模型的对象。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读