Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将作用域传递给AngularJS指令_Javascript_Angularjs - Fatal编程技术网

Javascript 将作用域传递给AngularJS指令

Javascript 将作用域传递给AngularJS指令,javascript,angularjs,Javascript,Angularjs,对于AngularJS指令,我有一个特定的场景: 通常,指令应该继承默认范围 但对于某些特定场景,我想用myValues(从web服务加载的对象)替换$scope.myValues中的所有值 我不能在这个场景中更改主作用域,因为它属于另一个应用程序(或多或少是一个插件机制) 谢谢和问候 Stefan如果我认为我找到了解决方案: 示例Html: 示例指令: app.directive('wiView',function(){ var linkFunction=函数(范围、元素、属性){ if(

对于AngularJS指令,我有一个特定的场景:

  • 通常,指令应该继承默认范围
  • 但对于某些特定场景,我想用
    myValues
    (从web服务加载的对象)替换
    $scope.myValues
    中的所有值
我不能在这个场景中更改主作用域,因为它属于另一个应用程序(或多或少是一个插件机制)

谢谢和问候
Stefan

如果我认为我找到了解决方案:

示例Html:

示例指令:

app.directive('wiView',function(){
var linkFunction=函数(范围、元素、属性){
if(attrs.layout!==未定义){
scope.layout=angular.fromJson(attrs.layout);
}
};
返回{
限制:“E”,
范围:正确,
优先级:0,
link:linkFunction,
模板:“您好,{layout.property1}}!”
};

}))

您不能简单地在$http web服务成功中设置
$scope.myValues=MyDirective.getNewValues()
?您可以发布一些示例代码来显示您尝试了什么吗?请不要将答案编辑到问题中。@Wex:好的,是的,您是对的,完成了。
<wi-view data-layout="{{passLayout}}"></wi-view>
<hr />
Original property: {{layout.property1}}
app.controller('wiController', function($scope) {

    // Simulating the original scope values
    $scope.layout = {};
    $scope.layout.property1 = 'Original Value';

    // New scope values, just here for binding it to the controller
    var passLayout = {};
    passLayout.property1 = 'Value Overwritten';
    passLayout.property2 = 'Another Property';
    $scope.passLayout = passLayout;

});
app.directive('wiView', function () {
var linkFunction = function(scope, elems, attrs) {

    if (attrs.layout !== undefined) {
        scope.layout = angular.fromJson(attrs.layout);
    }
};

return {
    restrict: "E",
    scope: true,
    priority: 0,
    link: linkFunction,
    template: '<div>Hello, {{layout.property1}}!</div>'
};