在大多数情况下,<custom-resource>.query()方法的结果是一个数组,可以使用以下(工厂)代码通过某些方法(业务逻辑)轻松扩展:
var Data = $resource('http://..');
Data.prototype.foo = function() {return ...};
Run Code Online (Sandbox Code Playgroud)
这非常适合与ng-repeat/ng-class一起使用,如下所示:
<tr ng-repeat="item in responseData" ng-class="{warning: item.foo()}">..</tr>
Run Code Online (Sandbox Code Playgroud)
我的问题是每个列表响应都封装在一个对象中,除了实际列表之外,它还有一些元属性(排序信息等),所以返回的最终对象是这样的:
{ order_field: "name", items: [{..}, {..},{..}] }
Run Code Online (Sandbox Code Playgroud)
现在,我如何使用ng-repeat/ng-class进行与之前相同的操作?
<tr ng-repeat="item in responseData.items" ng-class="????">..</tr>
Run Code Online (Sandbox Code Playgroud)
之前的方法不起作用,因为定义了"foo"方法responseData而不是item对象
有没有办法直接扩展用于实例化列表中对象的基类?
谢谢!
从 URL 获取 json 时,我只想在数据有效时使用它。
到目前为止,我使用JSON 的方法:
$http.get(
'data/mydata.json'
+ "?rand=" + Math.random() * 10000,
{cache: false}
)
.then(function (result) {
try {
var jsonObject = JSON.parse(JSON.stringify(result.data)); // verify that json is valid
console.log(jsonObject)
}
catch (e) {
console.log(e) // gets called when parse didn't work
}
})
Run Code Online (Sandbox Code Playgroud)
但是在我进行解析之前,angular 已经失败了
SyntaxError: Unexpected token { at Object.parse (native) at fromJson ( http://code.angularjs.org/1.2.0-rc.2/angular.js:908:14 ) at $HttpProvider.defaults.defaults.transformResponse (http://code.angularjs.org/1.2.0-rc.2/angular.js:5735:18)在http://code.angularjs.org/1.2.0-rc.2/angular.js: 5710:12 at Array.forEach (native) at forEach ( http://code.angularjs.org/1.2.0-rc.2/angular.js:224:11 ) at …