我有一堆由标签和输入组成的模板/视图。我想将标签值设置到控制器型号($scope.data.details
这是一个数组)。将值设置为查看模型
代码:http://plnkr.co/edit/XqtyFKKNuo8upzPuaImo?p=preview
HTML
<body ng-controller="MainCtrl">
<label set-model="data.details[0]">Label 1</label>
<input type=text/>
{{ data.details[0] }}
<label set-model="data.details[1]">Label 2</label>
<input type=text/>
</body>
JS
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.data = {
details: []
};
});
app.directive('setModel', function() {
return {
restrict: 'EA',
link: function(scope, element, attrs) {
// var pair = JSON.parse(attrs)
scope[attrs.setModel] = element.html();
console.log(scope);
// console.log();
}
};
})
所以基本上:
data.details [0] = “标记1”
data.details [1] = “标记2”
...
我知道我可以在ng-init
做到这一点,但它将是一个长长的名单上。我想要inline在<label>
本身。
但是现在它不为$scope
工作基本上这显示在开发者控制台:
data: Object
data.details[0]: "Label 1"
data.details[1]: "Label 2"
因此,它并没有把details
为内部data
对象的关键,但它创造了一个新的关键data.details[0]
完全。此外,data
结构可能会在以后不同,所以我不想硬编码什么。
我该如何解决这个问题?
还是有更好的方式来做到这一点?