gpt4 book ai didi

带 Controller 的 Angularjs 指令

转载 作者:行者123 更新时间:2023-12-02 11:26:44 25 4
gpt4 key购买 nike

我正在尝试用它自己的 Controller 编写指令。

myApp.directive('imageUploadifive', function (createGal)
{
return {
restrict: 'A',
controller: function($scope)
{
//create gallery
$scope.created = createGal.createGal();
$scope.created.then(function(createGal){
$scope.gallery.id = createGal.created_id;
console.log($scope.gallery.id);//returning after the link function
});

$scope.gallery.galleryName = "New Image Gallery";
},
link: function($scope, element, attrs)
{
var id = $scope.gallery.id;
console.log(id);
$(element).uploadifive({
'uploadScript' : '/beta/images/upload',
'buttonClass' : 'uploadifive-button btn btn-primary',
'queueID' : 'imageGallery_queue',
'buttonText' : 'Select Files',
'fileSizeLimit' : 500,
'formData' : {
'galleryID' : id
},
'onError': function(errorType)
{
alert('There was a problem');
},
'onUpload': function()
{
}
});
}
};
});

该指令通过模态调用,//create gallery 正在为上传者 js 生成一个 id。我不明白的是链接:函数正在运行并在 Controller 之前返回未定义。任何有关这方面的指导将不胜感激。

谢谢

最佳答案

这并不是在 Controller 之前调用链接函数,而是因为$scope.created.then()是异步的,设置 id 的回调函数在链接函数之后调用。

要修复它,您需要调用$scope.created.then()在链接函数中改为:

link: function($scope, element, attrs) {
$scope.created.then(function(createGal) {
$scope.gallery.id = createGal.created_id;

$(element).uploadifive({
'uploadScript' : '/beta/images/upload',
'buttonClass' : 'uploadifive-button btn btn-primary',
'queueID' : 'imageGallery_queue',
'buttonText' : 'Select Files',
'fileSizeLimit' : 500,
'formData' : {
'galleryID' : $scope.gallery.id
},
'onError': function(errorType)
{
alert('There was a problem');
},
'onUpload': function()
{
}
});
});
}

关于带 Controller 的 Angularjs 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18136908/

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