我要做的是将隔离范围'指针'直接放在模板中的ngModel上。我期望的是范围变量在父控制器上自动更新。最终发生的是两个变量都被不断地评估为未定义。
我不确定为什么这不能按预期工作,因为具有双向绑定隔离范围意味着对于每个创建的名称,该名称将自动放在范围上(例如,我有inputA,因此范围。 inputA是create)。
我创建了一个日志函数,每当输入中的某些内容发生变化时就会运行,我输出结果...我一直对隔离范围变量inputA和inputB进行未定义。我很困惑;我做错了什么?
模板
<div ng-app="app">
<div ng-controller="MyCtrl">
<div my-directive input-A="input.inputA" input-B="input.inputB"></div>
</div>
<br/>
<!-- output input -->
{{ input | json }}
</div>
指令/控制器
angular.module("app")
.controller("MyCtrl", function($scope){ })
.directive("myDirective", function(){
return {
scope: {
inputA: "=",
inputB: "="
},
template: 'inputA: <input ng-model="inputA" ng-change="log(inputA)"/><br/>'
+'inputB: <input ng-model="inputB" ng-change="log(inputB)"/>',
link: function (scope, element, attrs) {
scope.log = function (theInput) {
console.log(theInput); // outputs correctly
console.log(scope.inputA); // outputs 'undefined'
console.log(scope.inputB); // outputs 'undefined'
};
}
}
});
答案 0 :(得分:0)
我认为该指令应该被称为:
<div my-directive input-a="input.inputA" input-b="input.inputB"></div>
请注意小写input-a
和input-b
。