javascript – 角度:提供ng模型的方法

前端之家收集整理的这篇文章主要介绍了javascript – 角度:提供ng模型的方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
最近我接受了Angular作为一个学习活动.

我想传递一个方法来ng模型或一个表达式,可以评估一个.

在这个小提琴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/>

和相应的js:

function MainController($scope) {
    $scope.records = [{
        outer: "Hello",inner: [{
            id: 1,text: "Angular"
        },{
            id: 2,text: "jQuery"
        }]
    },{
        outer: "World",text: "Node.js"
        },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++;
        }
    };

我已经尝试将ng-model =“getText(record)”按照https://groups.google.com/forum/#!topic/angular/Pef6LY2rT7g没有成功,另一个搜索结果是这个https://github.com/angular/angular.js/pull/1328,这对我来说同样没有帮助.

任何帮助将高度赞赏.

解决方法

您传入ng模型的任何内容都将被视为与范围有关的角度表达式.这意味着record.inner [0] .text被评估为$scope.record.inner [0] .text,然后使用该表达式的结果.当您使用getText(记录)时,角度计算$scope.getText(record),ng-model可以访问此评估的结果.请记住,ng模型不评估此函数调用的结果.

您的问题是您将结果作为角度表达式字符串返回,但从不评估它,所以ng-model被赋予一个不能使用的字符串.有很多方法来重新设计你的代码来处理这个问题,但是简单的(也可能不是最好的)方法是使用像ng-init这样的东西来获取函数调用的结果,然后把这个结果插入到ng-模型.看到这个小提琴的一个快速的例子http://jsfiddle.net/z5z9s/

猜你在找的JavaScript相关文章