自定义属性双向绑定不起作用
Custom attribute two way binding not working
在这个例子中,我面临2个问题
https://jsfiddle.net/1g6kvxst/
- 显然
<b>{{moo}}</b>
没有更新。表达式{{moo}}
不应该是 2 路绑定吗? - 可能是因为第一个问题,我的手表表达式关于链接回调中的指令
my-var
attr 值没有更新
我错过了什么?感谢您的帮助。
视图
<section ng-app="myApp" ng-controller="myController">
<div my-directive my-var="moo"></div>
<span>Result:</span> <b>{{moo}}</b>
</section>
命令
App.directive('myDirective', function () {
return {
restrict: 'A',
scope:{
myVar: '='
},
link: function (scope, element, attrs) {
scope.$watch(scope.myVar, function() {
console.log('my var changed to: ', scope.myVar);
});
}
};
});
控制器
var ctrls = angular.module('controllers',[]);
ctrls.controller('myController', ['$scope', function ($scope) {
$scope.moo = 0;
var t = setInterval(function(){
$scope.moo++;
},1000);
}]);
Angular 使用监视来重新计算视图中的变量。这些手表内置了Angular的异步功能,如$timeout
,$http
等。当使用原生setTimeout
时,angular的摘要周期不会接受这种变化;
使用 angular 的 $interval
服务而不是原生 JavaScript 间隔:
var t = $interval(function(){
$scope.moo++;
},1000);
不要忘记注入控制器:
ctrls.controller('myController', ['$scope', '$interval', function ($scope, $interval) {
要使$watch
正常工作,请观察键而不是对象:
scope.$watch('myVar', function() {
吉斯菲德尔
使用$interval
,而不是setInterval
,当你使用setTimeout
时,angular 不会运行摘要循环,因此你的指令范围不知道任何变化。
相关文章:
- 淘汰赛.JS'启用'长度绑定条件不起作用
- 对象文字方法上的Javascript绑定不起作用
- 自定义控件中的双向绑定在SAPUI5中不起作用
- Knockout输入绑定不起作用
- $http中的Angular 1数据绑定承诺不起作用
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- 角度指令双向绑定不起作用
- 指令中选择输入的双向绑定不起作用
- Angularjs:ui路由嵌套状态下的绑定不起作用
- Jquery事件绑定获胜'当作为方法调用时不起作用,但当直接在控制台中调用时会起作用
- 为什么我的淘汰选项绑定不起作用
- jQuery Ajax 元素的后期绑定不起作用
- colorbox与元素实时绑定'分组获胜'不起作用
- 样式绑定不起作用
- 在内联编辑的情况下,Knockout绑定不起作用
- 敲除数据绑定=“;html:html,内部html点击事件不起作用
- 当元素在事件绑定后附加到DOM时,触摸事件不起作用
- Javascript敲除绑定嵌套对象不起作用
- Aurelia反复绑定.因为不起作用
- 为什么我的数据绑定到一个计算函数不起作用(使用knockout.js和jade)