2015-12-16 27 views
3

我有以下指令:是否可以链接指令作用域(例如obj.prop)?

template: '<form novalidate class="form-inline" ng-submit="submit($event, building)">' + 
     '<div class="form-group">' + 
     '<label class="form-control-static">{{label}}</label>' + 
     '</div>' + 
     '<div class="form-group">' + 
     '<input name="input" class="form-control" type="text" ng-model="model" />' + 
     '</div>' + 
     '<input class="btn btn-default" type="submit" value="Submit" />' + 
     '</form>', 
     scope: { 
     label: "@", 
     building: "=", 
     model: "=", 
     //type: "=", 
     }, 

现在我必须写这样的事情在HTML:

<building-field label="name" building="building" model="building.name"></building-field> 

我想简单地将它通过只需要添加buildinglabel(然后把它们放在一起指令ng-model="building.name内):

<building-field label="name" building="building"></building-field> 

在p问题是,我不知道如何通过两个指令范围,并将它们作为obj.prop。这个怎么做?

回答

4

你没有什么特别的事情要做,obj.prop被支持。在您的模板:

<input name="input" class="form-control" type="text" ng-model="building[label]" /> 

作为一个侧面说明,你是一个插值(类型@)结合label。这意味着,您将始终拥有中的字符串"name"。如果你想真正合格name值,则需要使用双大括号:

<building-field label="{{name}}" building="building"></building-field> 
+0

当我做'NG-模型=“building.label”'输入不显示了。我认为这是因为标签使用'@'而建筑使用'='。我希望'obj'和'prop'的值来自'building'和'label'。 – alexchenco

+0

@alexchenco明白了,我更新了我的答案。你想要的是'ng-model =“建筑[标签]”' – floribon

+0

它工作!所以方括号使得插值的范围显示在属性中? – alexchenco

相关问题