0

我要做的是将隔离范围“指针”直接放在模板中的 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'
            };
        }
    } 
});
4

1 回答 1

0

我认为该指令应称为:

<div my-directive input-a="input.inputA" input-b="input.inputB"></div>

注意小写input-ainput-b

于 2013-11-04T16:43:14.273 回答