Srg*_*man 15 angularjs angular-ui-router
我有一个视图,我有以下代码:
<input type="button" value="New Post" ng-click="$state.go('blog.new-post')">
Run Code Online (Sandbox Code Playgroud)
目标是在不必使用href的情况下转换到新状态.不幸的是,上面的代码并没有触发.
我还尝试在控制器中为此视图包含$ state:
app.controller('blogPostsController', function($scope, $stateParams, $http, $state) ...
Run Code Online (Sandbox Code Playgroud)
但仍然没有.transictionTo似乎也没有用.
任何人都知道如何使这项工作?
编辑:我只能通过分配:
$scope.$state = $state;
Run Code Online (Sandbox Code Playgroud)
在我的控制器内.这看起来很难看.没有其他方法来访问$ state而不将其分配给范围?
jkj*_*ing 45
如果您使用的ui-router是有一个名为的属性ui-sref,可以按如下方式使用:
<a ui-sref="blog.new-post"></a>
Run Code Online (Sandbox Code Playgroud)
我建议使用它并将链接设置为按钮样式(如果您使用的是像Twitter Bootstrap这样的CSS库,则可以轻松完成).然后,在编写链接时,您不需要乱用任何JavaScript.
如果需要将参数传递到状态,可以执行以下操作:
<a ui-sref="blog.edit-post({id: item.id})"></a>
Run Code Online (Sandbox Code Playgroud)
其中$ scope.item是一个具有ID属性的对象,您希望将其作为URL参数传递.
Mic*_*mza 12
根据https://github.com/angular-ui/ui-router/wiki/Quick-Reference#note-about-using-state-within-a-template你可以添加它$rootScope,所以它将全部可用范围,因此所有模板,由
angular.module("myApp").run(function ($rootScope, $state, $stateParams) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
});
Run Code Online (Sandbox Code Playgroud)