0
我在AngularJS中發現了奇怪的行爲。在我看來像一個錯誤,但也許是合理的。
我有一些價值,我傳遞給我的指令作爲屬性。在這個指令裏面,我看着$scope.$watch
的參數。原來,如果我把ng-if
放在這個指令中,並且條件是$watch
將會被錯誤的舊值觸發(舊值==新值)。
我需要知道該值何時真正改變(以區別於初始運行時$watch
被觸發而沒有改變)。如果這不是一個錯誤,那麼我怎麼能知道我的指令中舊值是否與當前值不同?
Here is the fiddle to show the problem
HTML代碼:
<div ng-controller="myCtrl">
<select ng-model='myValue'>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<check-change value="myValue"></check-change>
<check-change value="myValue" ng-if="myValue==3"></check-change>
</div>
JS後端:
var myApp = angular.module('myApp', []);
myApp.controller('myCtrl', function ($scope) {
$scope.myValue = 1;
});
myApp.directive('checkChange', function() {
return {
restrict: 'E',
template: '<div>{{result}}</div>',
scope: {
value: '='
},
controller: directiveController
};
});
var directiveController = function ($scope) {
$scope.$watch('value', function (newVal, oldVal) {
$scope.result = 'Watch launched, result: ' + (newVal == oldVal);
});
};
你應該總是在這裏SO張貼相關的代碼。人們不應該需要去異地資源來幫助你。記得鏈接腐 – Satpal
@Satpal你說得對。完成。 – Episodex