Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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_Angularjs Directive - Fatal编程技术网

Javascript 如何在Angularjs中定义绑定隔离作用域属性的位置?

Javascript 如何在Angularjs中定义绑定隔离作用域属性的位置?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,可以定义在哪个范围的属性必须分配指令中定义的属性? e、 g: 但我想要的是: angular.module("myMod",[]). directive("myDir", { restrict: "E", scope: { config: { prop1: "@myProp1" }, //This is invalid prop2: "@myProp2", }, controller: function($scope){

可以定义在哪个范围的属性必须分配指令中定义的属性? e、 g:

但我想要的是:

angular.module("myMod",[]).
directive("myDir", {
    restrict: "E",
    scope: {
        config: { prop1: "@myProp1" }, //This is invalid
        prop2: "@myProp2",
    },
    controller: function($scope){
        //And here, $scope.config.prop1 refers to myProp1
        $scope.config.prop1;
        $scope.prop2;
    },
});
我找到了一个部分解决方案:使用controllerAs和bindToController,controllerAs定义了一个别名来引用控制器,bindToController将隔离作用域属性绑定到控制器,然后我有:

$scope.alias.prop1
$scope.alias.prop2 
但我不想将所有属性绑定到控制器,因为我不需要那个。我想将其中一些绑定到范围的属性,其余绑定到另一个属性或直接绑定到范围

为什么我要这么做? 因为我想分配: $scope.config=newConfig

这比:

$scope.prop1 = newProp1;
$scope.prop2 = newProp2;

我没有什么强烈的想法,只是一个想法。用这样的东西怎么样

var cfg = {prop1: '@myProp1'};
angular.module("myMod",[]).
directive("myDir", {
    restrict: "E",
    scope: {
        config: cfg.prop1,
        prop2: "@myProp2",
    },
    controller: function($scope){
        $scope.config;
        $scope.prop2;
    },
});

我不确定是否可以完全按照您的意愿进行操作,但可能会适合以下情况:

angular.ModuleMyMode,[].directivemyDir,函数{ 返回{ 限制:E,, 范围:{ 配置:&myConfig, prop2:@myProp2 }, 链接:函数$scope{ log$scope.config$scope.prop2; } } };

因此,您可以在HTML中定义配置:

韦弗

另一种方法是定义约定,例如,每个配置都应该以config-和make指令开头,这将基于这些属性在作用域中创建一个新的字段对象 例如:

操作方法相同:作用域:{config:{param1:@myParam1}},如果我定义myConfig(如您的示例),则它无效。config1和config2属性将使用&myConfig中定义的“&”模式进行评估,并且更为详细。你给了我一个关于惯例的建议,但我并不完全理解,你能更详细地解释一下吗?更新了我的答案,我不确定它是否优秀,但可能会很有趣
var cfg = {prop1: '@myProp1'};
angular.module("myMod",[]).
directive("myDir", {
    restrict: "E",
    scope: {
        config: cfg.prop1,
        prop2: "@myProp2",
    },
    controller: function($scope){
        $scope.config;
        $scope.prop2;
    },
});