我要做的是将隔离范围“指针”直接放在模板中的 ngModel 上。我期望的是范围变量在父控制器上自动更新。最终发生的是两个变量都被不断地评估为未定义。
我不确定为什么这不能按预期工作,因为具有双向绑定隔离范围意味着对于每个创建的名称,该名称会自动放在范围上(例如,我有 inputA,所以创建了 scope.inputA )。
我创建了一个日志函数,每次输入中的某些内容发生变化时都会运行该函数,并输出输入结果......我一直在为隔离范围变量 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'
};
}
}
});