0
今天我正在學習指令,我發現編譯和鏈接功能。但我試過我的鏈接功能不工作。指令不工作的鏈接功能
我的代碼是
<body ng-app="myModule" ng-controller="myController">
this is directive<br />
<input id="inputTextColor" ng-model="color" type ="text"/>{{color}}
<br />
<hello> oldertext oldertext </hello>
</body>
<script>
var myModule = angular.module("myModule", []);
myModule.directive("hello", function() {
var directive = {};
directive.restrict = 'E';
directive.template = '<b>hi its me <span ng-transclude></span></b>';
directive.transclude = true;
directive.compile = function (element, attributes) {
element.css('border', 'solid 1px black');
var linkfunction = function ($scope, element, attributes) {
element.css('background-color', $scope.color);
}
return linkfunction;
}
return directive;
});
myModule.controller("myController", function ($scope) {
$scope.color = "red";
});
</script>
在這裏,我想,如果我在文本框寫colorname那麼我的指令應該更新,因爲文本框被綁定到我的scope.color的背景色。
非常感謝,這是我在找什麼。但記住,我仍然有一個問題,即每當我們的作用域更改時,編譯函數運行一次,鏈接函數函數就會運行。可能是我錯了,但我不清楚爲什麼我們需要在這裏添加手錶。根據我的理解,鏈接函數應該自動調用作爲我的範圍更新..請說明我。 –
你的理解是不正確的。鏈接功能在模板被克隆後執行一次。它不會在每次範圍更改時都執行。 –
謝謝@JBNizet。非常感謝。我將再次學習編譯和鏈接功能。再次感謝您寶貴的時間和寶貴的反饋意見... –