gpt4 book ai didi

javascript - 在不同的 attr 中定义的指令 attr 内的回调函数

转载 作者:IT王子 更新时间:2023-10-29 03:10:06 27 4
gpt4 key购买 nike

所以我有一个叫做 say,mySave 的指令,它几乎就是这个

app.directive('mySave', function($http) {
return function(scope, element, attrs) {
element.bind("click", function() {
$http.post('/save', scope.data).success(returnedData) {
// callback defined on my utils service here

// user defined callback here, from my-save-callback perhaps?
}
});
}
});

元素本身看起来像这样

<button my-save my-save-callback="callbackFunctionInController()">save</button>

callbackFunctionInController 现在只是

$scope.callbackFunctionInController = function() {
alert("callback");
}

当我在 my-save 指令中 console.log() attrs.mySaveCallback 时,它只会给我一个字符串 callbackFunctionInController(),我读了somewhere我应该 $parse this 并且它会很好,所以我尝试 $parse(attrs.mySaveCallback) 这给了我一些功能,但几乎不是我正在寻找的那个,它给了我

function (a,b){return m(a,b)} 

我做错了什么?这种方法从一开始就存在缺陷吗?

最佳答案

所以看起来最好的方法是使用 ProLoser 建议的隔离范围

app.directive('mySave', function($http) {
return {
scope: {
callback: '&mySaveCallback'
}
link: function(scope, element, attrs) {
element.on("click", function() {
$http.post('/save', scope.$parent.data).success(returnedData) {
// callback defined on my utils service here

scope.callback(); // fires alert
}
});
}
}
});

要将参数传回 Controller ,请执行此操作

[11:28] <revolunet> you have to send named parameters 
[11:28] <revolunet> eg my-attr="callback(a, b)"
[11:29] <revolunet> in the directive: scope.callback({a:xxx, b:yyy})

关于javascript - 在不同的 attr 中定义的指令 attr 内的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15896985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com