【发布时间】:2014-08-06 11:52:56
【问题描述】:
我有下一个代码:
angular.module("Test", [])
.directive("testDirective", function () {
return {
restrict: "A",
scope: {
model: "="
}
link: function(scope, element) {
scope.$watch(function () {
element.find("#input").val().length
}, function (nv){
console.log(nv);
});
}
}
})
.controller("TestController", function($scope) {
$scope.model = "Test";
$scope.updateModel = function() {
$scope.model = Math.random();
};
})
;
<div ng-controller="TestController">
<div test-directive model="model">
<input id="input" type="text" /> <br />
<input type="button" value="Edit Model" ng-click="updateModel()" />
</div>
</div>
指令中$watch方法的回调只在按钮被点击时执行。但我想检查那个元素的变化。有什么办法可以做到吗?
编辑 1
如果我这样做了,我会注意到
scope: false
它不会创建一个孤立的范围,所以我可以从指令或控制器双向访问它(这是我想要的)。但是,它也不允许我观看模型...
如果我在控制器上有:
$scope.model.test = 1;
$scope.$watch("model.test", function(v) { log(v); });
并且从指令中的 HTML:
<input type="text" ng-model="model.test" />
然后我修改视图的输入字段,log(v) 永远不会执行...
【问题讨论】:
-
您是否要查看输入框的值是否有变化?
-
是的@Darren。那可能吗?是在一个指令内,所以如果我用控制器的正常方式来做它不会工作:(
-
好的,我已经用 plunker 添加了一个答案,向您展示了几种方法来做您可能想做的事情...
标签: javascript angularjs angularjs-directive angularjs-scope