我为我的项目数据创建了一个"模型" *,如下所示:
angular.module('myapp').factory("projectModel", function ($resource) {
return $resource(
"/api/projects/:id",
{ id: "@id" },
{
"update": { method: "PUT" }
}
);
});
我没有想要wait-until-everything-has-loaded-before-displaying-anything behavior using resolve
in the routing,而是我很乐意在用户准备就绪时弹出用户界面和数据。
将项目数据放在我的控制器中的$scope
上会很高兴,但由于projectModel
会返回承诺,而不是数据,我需要做类似的事情:
angular.module('myapp').controller('EditorCtrl', function ($scope, projectModel) {
projectModel.get({}, { 'id': session.projectId },
function (successResponse) {
// success callback
$scope.project = successResponse;
},
function (errorResponse) {
// failure callback
console.log(errorResponse);
}
);
数据将在指令中呈现,但由于指令的link
方法在$scope.project
设置之前执行,因此我无法及时呈现数据。我可以将projectModel
作为对指令的依赖,但感觉很脏。
使指令可以访问项目数据的正确方法是什么?
*奖金问题:我应该将我的$resource
派生服务视为MVC模型,还是令人困惑?如果是,那么使用辅助方法扩展模型的最佳方法是什么?
答案 0 :(得分:1)
$scope.$watch('projectList', function (newVal, oldVal) {
if (newVal !== oldVal ) {
angular.forEach($scope.projectList, function (row) {
row.getName = function () {
return splitName(row.community_name);
};
});
}
}, true);
是的,你是对的我有类似的问题,你可以通过观察$ scope.project中的更改来做到这一点,你可以将代码放在其中。检查上面的示例,以便在$ scope.projectList
中有值时动态更新ng-grid