gpt4 book ai didi

javascript - Angular Directive(指令)将范围隔离到未定义的父绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 17:00:17 25 4
gpt4 key购买 nike

我正在使用(很棒的)Restangular,我遇到了一些迫使我使用 scope.$parent(不是很棒)的东西,我不想使用它。似乎即使我的 Controller 是我的指令范围的父范围,= 独立范围绑定(bind)也会在我的父 Controller 执行之前进行评估。

使用以下 HTML:

<div ng-controller="myController">
<div x-my-directive x-some-value="parentValue"></div>
</div>

以及以下指令:

myApp.directive("myDirective", function () {
return {
restrict: 'A',
link: function (scope, elem) {
console.log(scope.someValue); // Logs 'undefined' :(
},
scope: {
someValue: "="
}
}
});

以及以下 Controller :

myApp.controller("myController", function($scope, allMyValues) {
allMyValues.getList().then(function(parentValue){
$scope.parentValue = parentValue;
});
}

如我的指令 link 函数所示,评估本应绑定(bind)到父级范围属性的范围属性会返回 undefined。但是,当我将指令 link 函数更改为以下内容时:

    myApp.directive("myDirective", function () {
return {
restrict: 'A',
link: function (scope, elem) {
setTimeout(function() {
console.log(scope.someValue); // Logs '{1: number_1, 2: number_2}'
}, 2000);
},
scope: {
someValue: "="
}
}
});

我该如何解决这个问题?

谢谢

最佳答案

应该有帮助:

myApp.controller("myController", function($scope, allMyValues) {
//add this line
$scope.parentValue={};

allMyValues.getList().then(function(parentValue){
$scope.parentValue = parentValue;
});
}

$scope.parentValue 在您的请求得到解决之前不存在,因此请将如下行添加到您的代码中示例演示 http://jsbin.com/komikitado/1/edit

关于javascript - Angular Directive(指令)将范围隔离到未定义的父绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29016222/

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