別の質問に答えているときに、属性を介して子モデルを親ディレクティブに渡すことができないことに気付きました。
この設定を考えると:
<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
属性を介してディレクティブ内のinputModelをどのように使用し、子によって行われた変更を表示できますか? 分離スコープを使用すると、分離された子の影響を受けない親モデルに対してのみ $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)
}
}
})
ディレクティブをさまざまなモデルで再利用できるようにするために、特定のモデルだけを見ることはできません。モデルを参照する属性を監視する必要があります。これが可能かどうかはわかりません。何か案は?
これが私がいじっているプランクです。