在Angular js中,在指令中调用模块控制器的方法,默认情况下不会看到它的作用域
Angular js, call module controller's method in the directive, which doesn't see it's scope by default
问题是:我在应用程序配置中指定了路由,如:
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)
-"Controller"内部的fire()函数没有。关键提示有:如果我在html中添加ng-controller="Controller",它会工作,但会在页面加载时触发两次。那么如何告诉指令执行"控制器"火灾方法不使用ng-controller="控制器"?
您可以使用scope.$eval()
,它将调用该方法。
link: function(scope, element, attrs) {
var raw = element[0];
var func = attrs.myDirective; // gets the value fire()
element.bind('click', function() {
console.log('loaddata');
scope.$eval(func);
// you shouldn't need to call $apply here
// since func will be executed within the
// controller
});
}
相关文章:
- AngularJs,在没有隔离的情况下将指令属性添加到作用域
- 在不使用隔离作用域的情况下执行函数的角度指令
- 在 Javascript 不起作用的情况下为数字添加逗号
- 在 jQuery 不起作用的情况下迭代变量
- 在jQuery不起作用的情况下阻止表单提交
- 如何使 AngularJS 指令在不隔离作用域的情况下清楚地定义其依赖关系
- JavaScript 变量的作用域和下划线.js
- 在 if 条件不起作用的情况下使用 .hasClass()
- 在没有自己的控制器的情况下使用指令作用域何时合适
- 在不使用作用域的情况下,我应该如何引用控制器函数中的服务
- 淘汰:在对象不起作用的情况下进行多选
- 在Angular js中,在指令中调用模块控制器的方法,默认情况下不会看到它的作用域
- 在不使用全局作用域的情况下,单击将数字推送到Array
- 如何在不动态加载模板的情况下在视图中创建一个隔离的作用域
- 在ajax不起作用的情况下在sql中插入数据
- 在Angular Js中没有usingn指令的情况下,如何对作用域值调用onchange事件
- jQuery在Wordpress中不起作用-默认情况下起作用
- 在JQuery不起作用的情况下更改显示
- 在事件处理程序不起作用的情况下调用代码隐藏
- Javascript -如何在没有'this'的情况下改变作用域和访问方法?