我是Angular的新手 - 我的问题 - 当我致电$scope.editProfile()
时,panels.left
的值在工厂中发生了变化,但页面上的内容没有变化。在html文件中我使用ng-include如下:
<div ng-include src="leftPanel"></div>
首次加载页面时,视图/ profile.html会在div中呈现。但是后来当我调用$scope.editProfile()
时我希望div用views / edit.html的内容刷新 - 工厂中的值确实发生了变化(console.log证明了这一点),但页面内容没有更新。
myApp.factory("panels", function () {
return {
left: "views/profile.html",
center: "views/msgs.html",
right: "views/friends.html"
};
});
myApp.controller("homeCtrl", function ($scope, api, panels) {
$scope.leftPanel = panels.left;
$scope.centerPanel = panels.center;
$scope.rightPanel = panels.right;
});
myApp.controller("profileCtrl", function ($scope, api, panels) {
$scope.user = api.bio.get();
$scope.editProfile = function () {
panels.left = "views/edit.html";
};
});
答案 0 :(得分:0)
你最好在ui-router中使用命名视图,这是处理路由和状态的一种比你现在更好的方法。
但是,如果您希望当前的逻辑工作,则需要在homeCtrl的函数中包含工厂分配。
即,:
$scope.leftPanel = function() { return panel.left; }