当ng-include更改角度时更新渲染

时间:2014-04-20 18:33:50

标签: javascript angularjs

我是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";
    };
});

1 个答案:

答案 0 :(得分:0)

你最好在ui-router中使用命名视图,这是处理路由和状态的一种比你现在更好的方法。

但是,如果您希望当前的逻辑工作,则需要在homeCtrl的函数中包含工厂分配。

即,:

$scope.leftPanel = function() { return panel.left; }