Angular Element的范围未按预期工作

时间:2013-11-19 18:30:55

标签: angularjs

我有一个现有的单页面Web应用程序构建为自己动手制作的jQuery应用程序。我正在尝试合并angularjs,但我遇到了一些麻烦。

我有一些HTML链接,我想让jQuery注册点击处理程序,但有这些链接动态加载角度视图到DOM。 Please see this plunk of what I'm trying to do.如果我使用ng-click(链接),它可以正常工作。但是,我不想使用ng-click,因为我想在使用angular之前执行我写的自己的SPA路由代码。我希望动态获取范围并触发与ng-click触发相同的功能,但它不起作用:

<a id="aPage1" href="#">Page 1 Is Not Working</a>
<a ng-click="nav('page2.html')" href="#">Page 2 is working with ng-click</a>

$('#aPage1').click(function(e) {
  // This triggers the correct function, but that function doesn't behave correctly
  angular.element(document.getElementById('main')).scope().nav($(this).attr('angularview'));
});

app.controller('HomeController', ['$scope', function($scope){
   $scope.nav = function(page) {
     $('#divContent').hide();
     $('#divNewContent').show();
     // This line only appears to work when called by ng-click
     $scope.template = page;
   };
}]);

如果在HomeController中调试nav函数,则设置范围变量,实际上,它看起来具有与从ng-click触发时相同的属性,但绑定不起作用。我做错了什么?

感谢您的帮助!

安迪

1 个答案:

答案 0 :(得分:1)

虽然我不鼓励你构建一个使用角度特征的jquery应用程序,你应该知道任何范围修改都是在没有使用angular的方法的情况下完成的(例如观察者,< em> ng-event 指令...)未在视图中更新 要强制角度更新绑定,您应该使用$scope.$apply()