我正在尝试$watch
来自控制器的对象。但它不起作用。这是我的控制器代码:
angular.module('myapp',[]).controller('myController', function(){
var vm = this;
vm.name = "myname"
})
在directive
:
angular.module('myapp',[]).directive('myDirective',function(){
return{
link:function(scope, element, attrs){
scope.$watch('vm.name', function(nv,ov){
console.log(nv) //not working
}
}
}
})
这里缺少什么?任何人帮助我?
如果我不对,请帮我在这里纠正我
答案 0 :(得分:1)
我更新了我的代码:它适用于我
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
var vm = this;
vm.name = "no name";
vm.update = function(){
vm.name = "new Name";
}
});
app.directive('myDirective', function(){
return{
link: function(scope, element, attrs){
scope.$watch('Ctrl.name', function(nV, oV){
console.log( nV );
})
}
}
})
答案 1 :(得分:0)
您需要指定在指令中使用哪个控制器
angular.module('myapp',[]).directive('myDirective',function(){
return {
controller: myController,
controllerAs: 'vm', // this will let you use vm.name in any bindings
link:function(scope, element, attrs){
scope.$watch('vm.name', function(nv,ov){
console.log(nv) //not working
}
}
};
})
function myController(){
var vm = this;
vm.name = "myname"
});
<强> 修改 强>
鉴于您的Plunker,此解决方案无法满足您的需求
请检查此Plunker
答案 2 :(得分:0)