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
属性。非常感谢这就是问题所在。太棒了!