在回答另一个问题时,我意识到我无法通过子模型的属性将子模型传递给父指令。
鉴于此设置:
<form child-watch mod="inputModel" name="form"><!--ignore creepy directive name-->
<input type="text" name="one" ng-model="inputModel.one">
<input type="text" name="two" ng-model="inputModel.two"><br/>
<input type="submit" ng-disabled="form.$pristine">
<p>Original Model: {{original}}</p>
<p>Isolate Scope Model: {{isolate}}</p>
</form>
我如何$watch
通过其属性在指令中输入模型,并查看孩子所做的更改?如果我使用隔离范围,它只会 $watch UP 到父模型,现在不受隔离子模型的影响。
显然这不起作用,但你可以看到我要走的方向:
app.directive('childWatch', function(){
return {
// removing the isolate scope allows parent scope.inputModel to update
scope:{
mod: "="
},
link: function(scope, element, attrs){
//this does not reflect change upon the parent scope.inputModel
//if using isolate scope. AND, I don't want to $watch a specific
// model, because the directive needs to be reusable. It needs to watch
// an attribute that references the model.
scope.$watch('inputModel', function(val){
scope.original = val;
},true)
//this only has access to the parent scope.inputModel
scope.$watch('mod', function(i){
scope.attribute = i;
}, true)
}
}
})
为了使指令可重复用于不同的模型,我不能只看一个特定的模型。它需要监视引用模型的属性。我不确定这是可能的。有任何想法吗?
这是我正在搞砸的笨蛋。