我试图找到以下问题的解决方案:
How to create on-change directive for AngularJS?
我已经在答案中建立了jsFiddle,它起作用了……但前提是该属性直接附加到$ scope上。事实上,如果我
1)将$ scope.strText更改为$ scope.model.strText
2)并将属性值从strText更改为model.strText
不再工作了。
这里是HTML代码:
<div ng-controller="MyCtrl">
<input on-change="model.strText"/>
<input on-change="model.strText"/>
<p>{{model.strText}}</p>
</div>
这是JS代码:
var app=angular.module('myApp', []);
app.directive('onChange', function() {
return {
restrict: 'A',
scope:{'onChange':'=' },
link: function(scope, elm, attrs) {
scope.$watch('onChange', function(nVal) { elm.val(nVal); });
elm.bind('blur', function() {
var currentValue = elm.val();
if( scope.onChange !== currentValue ) {
scope.$apply(function() {
scope.onChange = currentValue;
});
}
});
}
};
});
app.controller('MyCtrl', function($scope) {
$scope.model.strText = "Hello";
});
这是jsFiddle
http://jsfiddle.net/pmcalabrese/XbJVb/
先感谢您。
最佳答案
由于$scope.model
未定义,因此您的数据源存在一些缺陷。更改为
app.controller('MyCtrl', function ($scope) {
$scope.model = {};
$scope.model.strText = "Hello";
});