ade*_*elx 10 javascript angularjs
我最近接受了Angular的学习练习.
我想将一个方法传递给一个ng-model或者一个可以评估为一个的表达式.
在这个小提琴http://jsfiddle.net/C4aGk/你会看到我已经对该字段进行了硬编码,ng-model="record.inner[0].text"并且它可以工作,现在的事情是,我想用一些东西替换硬编码的零.在运行时返回,由标准选择说id = 1.
我的HTML代码:
<div ng-controller="MainController" ng-app>
<div ng-repeat="record in records">
<input ng-model="record.inner[0].text"> <span>{{record.outer}}</span>
<div ng-repeat="nested in record.inner">{{nested.id}} - {{nested.text}}</div>
<hr />
</div>
</div>
<br/>
Run Code Online (Sandbox Code Playgroud)
和相应的js:
function MainController($scope) {
$scope.records = [{
outer: "Hello",
inner: [{
id: 1,
text: "Angular"
}, {
id: 2,
text: "jQuery"
}]
}, {
outer: "World",
inner: [{
id: 1,
text: "Node.js"
}, {
id: 2,
text: "Underscore.js"
}]
}];
$scope.getText = function (record) {
var index = 0;
for (nested in record.inner) {
if (nested.id === 1) {
return "record.inner[" + index + "].text";
}
index++;
}
};
Run Code Online (Sandbox Code Playgroud)
我已经尝试ng-model="getText(record)"按照https://groups.google.com/forum/#!topic/angular/Pef6LY2rT7g放置但没有成功,另一个搜索出现了这个https://github.com/angular/angular.js/拉/ 1328对我来说同样无益.
任何帮助将受到高度赞赏.
Jon*_*on7 11
您传入ng-model的任何内容都将被评估为针对范围的角度表达式.这意味着将record.inner[0].text其评估为$scope.record.inner[0].text,然后使用该表达式的结果.使用时getText(record),角度计算$scope.getText(record)和ng-model可以访问此评估的结果.请记住,ng-model不会评估此函数调用的结果.
您的问题是您将结果作为角度表达式字符串返回,但从未对其进行评估,因此为ng-model提供了一个不能使用的字符串.有很多方法可以重新设计代码来处理这个问题,但简单(也可能不是最好的)方法是使用类似ng-init的方法来获取函数调用的结果,然后将结果插入到ng-模型.看到这个小提琴快速举例http://jsfiddle.net/z5z9s/