【问题标题】:AngularJS - Update model based on URLAngularJS - 基于 URL 更新模型
【发布时间】:2012-07-19 06:36:11
【问题描述】:

这基本上是这个问题的后续问题:AngularJS - How to use $routeParams in generating the templateUrl?。有关此问题的正确上下文,请参见我的代码。

所有导航部分都运行良好,但现在当我导航时,我想根据primaryNavsecondaryNav 更新我的$scope 中的一些属性。我以为我可以用$watch 做点什么,但我似乎什么也做不了。以下是我尝试过的一些事情:

$scope.$watch($location.path(), function() {...}); //result in js error
$scope.$watch($location, function() {...}); //function runs once on page load, but not after that
$scope.$watch($window.location, function() {...}); //function runs once on page load, but not after that
$scope.$watch(window.location, function() {...}); //function runs once on page load, but not after that
$scope.$watch(window.location.href, function() {...}); //results in js error

我可能会在我的控制器中创建一些方法来获取这些导航并更新所有内容并导航,然后将ng-click 添加到所有锚标记。然而,我真正喜欢 AngularJS 的一件事是为 href 使用真正的 URL 外观值(例如 <a href="#/priNav/secNav">Foo</a>)。当我在不通过控制器上的某些方法进行路由时,是否无法根据不断变化的 URL 更新我的模型?我希望我的问题是有道理的。

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:
     $scope.$watch(function() {
        return $location.path();
     }, function(){
        ...
     });
    

    你应该传递一个可以在作用域内计算的函数或字符串

    【讨论】:

    • 啊...我忘了看功能。我尝试的一切都在一个字符串上。 $scope.$watch($location.path, function(){}); 不起作用,但 $scope.$watch(function() { return $location.path() }, function(){...}); 起作用。谢谢!
    • 谢谢!它甚至适用于$location.search
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多