采用了棱角分明我创造了这样的指令:
angular
.module('my-module', [])
.directive('myDirective', function () {
return {
restrict: 'E',
templateUrl: currentScriptPath.replace('.js', '.html'),
scope: {
scenarios: '='
},
controller: MyDirectiveController,
controllerAs: 'vm',
bindToController: true,
replace: true
}
});
MyDirectiveController
:
MyDirectiveController.$inject = ['$scope'];
function MyDirectiveController($scope) {
var vm = this;
vm.scenarios = $scope.scenarios;
}
我的指令HTML模板是这样的:
<div>{{vm.scenarios[0].name}}</div>
在我父视图HTML我使用的指令是这样的:
<my-directive scenarios="vm.scenarios"></my-directive>
父控制器有一个属性:
vm.scenarios = [] // could be [{ name : "test"}]
由于vm.scenarios
父控制器的得到的$ HTTP设置后调用,当它不可vm.scenarios
指令控制器绑定到$scope.scenarios
并没有更新的家长控制时, vm.scenarios
被最终填充。
当添加这我的指令控制器,它的工作原理,但解决方案似乎我错了:
$scope.$watch('scenarios', function(newValue) {
if (newValue !== undefined) {
vm.scenarios = $scope.scenarios;
}
});