1)當使用contrller作爲語法時,$compile(...)($scope)
更改爲$compile(...)(vm)
。也爲所有的函數和變量,而不是$範圍內使用vm
或this
var vm = this;
所以不是$scope.list
使用vm.list
和功能也可以使用。
$scope.do = function() ..
vm.do = function() ....
2)在指令像添加controllerAs
這個
app.directive('myDirective', function() {
return {
scope: {},
controller: function() {
this.name = 'Elnaz'
},
controllerAs: 'ctrl',
template: '<div>{{ctrl.name}}</div>'
};
});
,如果你想引用外部控制器使用該
app.directive('myDirective', function() {
return {
restrict: 'A',
controller: 'EmployeeController',
controllerAs: 'ctrl',
template: ''
};
});
在視圖改變像這樣:
<div ng-controller="myController as ctrl">
{{ctrl.name}}
<button type="button" ng-click="ctrl.do()">Do</button>
</div>
編輯: works demo
非常感謝。但是我有一些問題:正如你所看到的,在指令中有一個控制器已經注入了$ scope,我應該怎麼做?是$ scope與Controller的$ scope有關嗎?您是否在指令定義EmployeeCtrl中省略了指令自己的控制器和myController? – Elnaz
看到我更新的答案。 –
看到這個示例可能會幫助你http://stackoverflow.com/questions/37096954/ng-model-wont-update-the-changed-form-content/37097044#37097044 –