angularjs中,ui-sref能传递参数吗

angularjs中,ui-sref能传递参数吗,第1张

angularjs中,ui-sref能传递参数的,如下:神锋

页面中游拆晌:<a ui-sref=“admin.userList({type: 1, role: 2})” class=“btn”御吵>按钮</ a>

点击按钮:

$stateProvider.state(‘admin.userList’, {

url: ‘/listUser?type&role’, //参数必须先在这边声明templateUrl: requirejs.toUrl(’…/…/user/user_list.html’),

resolve: {

module: lazyModule([’…/…/user/index’])

}

})

激活状态

有三种方册稿猜法来激活状态:

调用$state.go()方法,这是一个高级的便利方法。

点击包含ui-sref指令的链接。

导航到与状态相关联的 url。

Templates 模板

可以通过下面几种方法来配置一个状态的模板。 方法一:配置template属性,指定一段 HTML 字符串,这人是设置模板的最简单的方式。

$stateProvider.state(<spanclass="hljs-string">'contacts'</span>, {

template: <spanclass="hljs-string">'<h1>My Contacts</h1>'</span>

})

方法二:配置templateUrl

属性,来加载指定位置的模板,这是设置模板的常用方法。

$stateProvider.state(<spanclass="hljs-string">'contacts'</span>, {

templateUrl: <spanclass="hljs-string">'contacts.html'</span>

})

templateUrl的值也可以是一个函数返回的url,函数带一个预设参数stateParams。 方法三:通过 templateProvider 函数返回模板的 HTML。

<spanclass="hljs-variable">$stateProvider</span>.state(<spanclass="hljs-string">'contacts'</span>, {

templateProvider: <spanclass="hljs-function"><spanclass="hljs-keyword">function</span><spanclass="hljs-params">(<spanclass="hljs-variable">$timeout</span>, <spanclass="hljs-variable">$stateParams</span>)</span></span>{

<spanclass="hljs-keyword">return</span><spanclass="hljs-variable">$timeout</span>(<spanclass="hljs-function"><spanclass="hljs-keyword">function</span><spanclass="hljs-params">()</span></span>{

<spanclass="hljs-keyword">敬铅return</span><spanclass="hljs-string">'<h1>'</span>+ <spanclass="hljs-variable">$stateParams</span>.contactId + <spanclass="hljs-string">'</h1>'</span>

}, <spanclass="hljs-number">100</span>)

}

})

如果想在状态被激活前,让<ui-view>有一些默认的内容,当状态被激活之后默认内容将被状态对应的模板替换。

<spanclass="hljs-tag"><<spanclass="hljs-title">body</span>></span>

<spanclass="hljs-tag"><<spanclass="hljs-title">ui-view</span>></span>

<spanclass="hljs-tag"><<spanclass="hljs-title">i</span>></span>Somecontentwillloadhere!<spanclass="hljs-tag"></<spanclass="hljs-title">i</span>></span>

<spanclass="hljs-tag"></<spanclass="hljs-title">ui-view</span>></span>

<spanclass="hljs-tag"></<spanclass="hljs-title">body</span>></span>

Controllers 控制器

可以为模板指定一个控制器(controller)。警告:控制器不会被实例化如果模板没有定义。 设置控制器:

$stateProvider.state('contacts', {

<spanclass="hljs-keyword">template</span>州型: '<h1>{{title}}</h1>',

controller: function($scope){

$scope.title = '<span class="hljs-type">My</span><span class="hljs-type">Contacts</span>'

}

})

如果在模块中已经定义了一个控制器,只需要指定控制器的名称即可:

$stateProvider.state(<spanclass="hljs-string">'contacts'</span>, {

template: <spanclass="hljs-keyword">...</span>,

controller: <spanclass="hljs-string">'ContactsCtrl'</span>

})

使用controllerAs

语法:

$stateProvider.state(<spanclass="hljs-string">'contacts'</span>, {

template: <spanclass="hljs-keyword">...</span>,

controller: <spanclass="hljs-string">'ContactsCtrl as contact'</span>

})

对于更高级的需要,可以使用controllerProvider来动态返回一个控制器函数或字符串:

$stateProvider.state(<spanclass="hljs-string">'contacts'</span>, {

template: <spanclass="hljs-keyword">...</span>,

controllerProvider: <spanclass="hljs-keyword">function</span>($stateParams) {

var ctrlName = $stateParams.type + <spanclass="hljs-string">"Controller"</span>

<spanclass="hljs-keyword">return</span>ctrlName

}

})

控制器可以使用$scope.on()

方法来监听事件状态转换。 控制器可以根据需要实例化,当相应的 scope 被创建时。例如,当用户点击一个 url 手动导航一个状态时,$stateProvider 将加载对应的模板到视图中,并且将控制器和模板的 scope 绑定在一起。

解决器 Resolver

可以使用 resolver 为控制器提供可选的依赖注入项。 resolver 配置项是一个由key/value构成的对象。

key – {string}:注入控制器的依赖项名称。

factory – {string|function}:

string:一个服务的别名

function:函数的返回值将作为依赖注入项,如果函数是一个耗时的 *** 作,那么控制器必须等待该函数执行完成(be resolved)才会被实例化。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11977389.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存