Javascript angularjs使用$eval从指令访问控制器的$scope
我试图在指令内部访问在指令控制器范围内定义的方法 这是我的指令Javascript angularjs使用$eval从指令访问控制器的$scope,javascript,html,angularjs,Javascript,Html,Angularjs,我试图在指令内部访问在指令控制器范围内定义的方法 这是我的指令 angular.module('myApp', []).directive('jqmultiselect', function($timeout){ return { restrict: 'A', scope: { info: '=info', }, link: function (scope, element, attrs, ngModelCtrl) { $time
angular.module('myApp', []).directive('jqmultiselect', function($timeout){
return {
restrict: 'A',
scope: {
info: '=info',
},
link: function (scope, element, attrs, ngModelCtrl) {
$timeout(function(){
//simple example
$(element).click(function(){
//do something with info
info = 'test';
scope.$eval(attrs.customclick);
});
});
}
};
}).controller('MainCtrl', function ($scope, $http, $timeout){
$scope.myInfo="test";
$scope.reloadModule = function(info){
console.log(info);
};
});
我试图做的是通过HTML元素的属性标记调用控制器中名为“reloadModule()”的函数
我的一段HTML代码
<select
jqmultiselect
info="myInfo"
customclick="reloadModule(info)">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
1.
2.
3.
更具体的例子在JSFIDLE上
您知道如何使其显示内部带有“更改确定”的警报吗 您的小提琴样品中有问题。一个是您丢失的
ng控制器
声明:
<div ng-app="myApp" ng-controller="MainCtrl">
这允许您在指令中调用方法,就像scope.customclick()一样简单代码>
关于第二个问题,如何根据我的指令更新var,请参见:
以下是更正的版本:
如果您觉得这有帮助,请不要忘记将其标记为您的答案抱歉,我想您在编辑JSFIDLE之前已经回答了!感谢&
信息,但是我仍然无法让它更新父范围中的“信息”数据。请参见更新为&
:(我想记录“更改确定”)的示例。有什么想法吗?是的,但为什么$scope.myInfo没有更改?({{myInfo}}停留在'test'而不是'change ok')我们可以从指令中修改其在控制器范围中的值吗?看看这个JSFIDLE,也许它是一个更好的例子:在您的指令中是$scope.info,而仅仅是info
angular.module('myApp', []).directive('jqmultiselect', function($timeout){
return {
restrict: 'A',
scope: {
info: '=info',
customclick:"&"
},
...
scope.$apply(function () {
scope.info = "change ok";
});