这是问题所在:我在应用程序配置中指定了路由,例如:
when('/url', {
controller: 'Controller',
templateUrl: 'url'
});
在我看来,我只有:
<div ng-view my-directive="fire()"></div>
重要的是没有 'ng-controller="MyController"' 属性。当用户加载 url 时,控制器触发并且模板被模型数据填充并呈现良好。
然后我有一个必须在同一页面上执行以下操作的指令:当我单击时,“控制器”必须执行该功能,获取数据并添加渲染模板/将数据添加到现有的。
该指令是:
myAppModule.directive('myDirective', function() {
return {
restrict: 'A',
templateUrl: 'url',
replace: false,
link: function(scope, element, attrs) {
var raw = element[0];
element.bind('click', function() {
console.log('loaddata');
scope.$apply(attrs.fire);
});
}
};
});
console.log 正在触发,但scope.$apply(attrs.fire)
- “控制器”内的 fire() 函数没有。关键提示是:如果我在 html 中添加 ng-controller="Controller" 它将起作用,但在页面加载时会触发两次。那么如何告诉指令在不使用 ng-controller="Controller" 的情况下执行“Controller”触发方法?