角度:为ng模型提供方法
Angular: Providing methods to ng-model
我最近把Angular作为一个学习练习。
我想传递一个方法ng-model
或一个可能计算为一个的表达式。
在这个小提琴 http://jsfiddle.net/C4aGk/你会看到我已经将字段硬编码为 ng-model="record.inner[0].text"
并且它有效,现在问题是,我想用运行时返回的东西替换硬编码的零,由标准选择,比如 id = 1
.
我的网页代码:
<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/>
和相应的 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++;
}
};
我尝试按照 https://groups.google.com/forum/#!topic/angular/Pef6LY2rT7g 放置ng-model="getText(record)"
但没有成功,另一个搜索发现了这个 https://github.com/angular/angular.js/pull/1328,这对我同样没有帮助。
任何帮助将不胜感激。
你传递到 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/
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 数组在递归方法中设置为null
- 打破承诺链的好方法是什么
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 使用“;这个“;JavaScript原型方法中的关键字
- 序列化数据属性中对象的最可靠方法
- 使用Objective-C的JavaScript注入方法
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- toBoolean方法类似于toString
- 如何在单击复选框后调用控制器方法
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- toLocaleDateString和toLocaleString方法不尊重机器时区
- 有条件更新d3.js力图中节点的最佳方法
- TypeError:在不兼容的接收器nodejs上调用了方法Uint8Array.length
- jQuery插件-从插件中调用公共方法