Javascript 如何在Angularjs中定义绑定隔离作用域属性的位置?
可以定义在哪个范围的属性必须分配指令中定义的属性? e、 g: 但我想要的是: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){
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;
},
});