Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 双向绑定指令范围内的对象_Angularjs_Angularjs Directive_Angularjs Scope - Fatal编程技术网

Angularjs 双向绑定指令范围内的对象

Angularjs 双向绑定指令范围内的对象,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我正在尝试创建一个指令,该指令对传递的对象具有双向绑定: angular.module('app').directive('lmDataBox', function () { return { restrict: 'A', scope: { lmdata: '=', }, template: '<input type="text" ng-model="lmdata.displayValue"&g

我正在尝试创建一个指令,该指令对传递的对象具有双向绑定:

angular.module('app').directive('lmDataBox', function () {
    return {
        restrict: 'A',
        scope: {
            lmdata: '=',
        },
        template: '<input type="text" ng-model="lmdata.displayValue">',
        link: function link(scope, element, attrs) {

            scope.lmdata.displayValue = 'testvalue';
    }
};
angular.module('app')。指令('lmDataBox',函数(){
返回{
限制:“A”,
范围:{
lmdata:“=”,
},
模板:“”,
链接:功能链接(范围、元素、属性){
scope.lmdata.displayValue='testvalue';
}
};
然而,即使我将“displayValue”设置为字符串,输入框也是空的


我做错了什么?

我可能发现了你的问题:

lmdata可能未在父作用域中设置。这意味着,当您尝试设置scope.lmdata.displayValue时,您尝试设置未定义的作用域变量

要解决此问题,必须在父作用域中设置lmdata,如下所示:

$scope.lmdata = {'displayValue':''};

我已经在plnkr中创建了一个工作示例(为了方便起见,我只是将限制更改为“E”)

这似乎是正确的答案,但只是吹毛求疵-这并不是说
lmdata.displayValue
没有设置(这很好)。这是因为未设置
lmdata
,并且无法设置
undefined
displayValue
属性。非常感谢这就是问题所在。太棒了!