我有一个现有的单页面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触发时相同的属性,但绑定不起作用。我做错了什么?
感谢您的帮助!
安迪
答案 0 :(得分:1)
虽然我不鼓励你构建一个使用角度特征的jquery应用程序,你应该知道任何范围修改都是在没有使用angular的方法的情况下完成的(例如观察者,< em> ng-event 指令...)未在视图中更新
要强制角度更新绑定,您应该使用$scope.$apply()
。