![](/img/trans.png)
[英]how to check if ng-init is processed without using $scope in angularjs?
[英]AngularJS: scope of ng-init
Angular 中 ng-init 的范圍是什么? 這是一個演示我的問題的簡單示例:
<div ng-init="model = { year: '2013'}">
<a href="" ng-click="model.year = '2012'">2012</a> |
<a href="" ng-click="model.year = '2013'">2013</a>
<div>Showing {{ model.year }}</div>
<hr />
</div>
<div ng-init="model = { year: '2013'}">
<a href="" ng-click="model.year = '2012'">2012</a> |
<a href="" ng-click="model.year = '2013'">2013</a>
<div>Showing {{ model.year }}</div>
</div>
此處提供現場示例: http : //plnkr.co/edit/HkioewOzzglvFMKDPdIf?p=preview
似乎 ng-init 范圍在 2 個div[ng-init]
之間共享。 例如,如果您單擊任一部分中的年份“2012”,它會更改兩個部分中的year
屬性。
有沒有辦法告訴 angular 為每個 ng-init 創建一個新的范圍,從而單擊“2012”年只會影響它所屬的部分?
ng-init
不會創建新的作用域,它會評估當前作用域中的表達式。 在您的示例中,您的ng-init
都在同一范圍內,更改相同的模型屬性會影響另一個。 如果您需要單獨的范圍,您可以嘗試ng-controller
。
<div ng-controller="MainCtrl" ng-init="model = { year: '2013'}">
<a href="" ng-click="model.year = '2012'">2012</a> | <a href="" ng-click="model.year = '2013'">2013</a>
<div>Showing {{ model.year }}</div>
<hr />
</div>
<div ng-controller="MainCtrl" ng-init="model = { year: '2013'}">
<a href="" ng-click="model.year = '2012'">2012</a> | <a href="" ng-click="model.year = '2013'">2013</a>
<div>Showing {{ model.year }}</div>
</div>
旁注:在這種情況下,您不需要 ngInit,只需直接在您的控制器中初始化該值。
ngInit 唯一合適的用途是為 ngRepeat 的特殊屬性設置別名。 除了這種情況,您應該使用控制器而不是 ngInit 來初始化范圍上的值。
由於ng-if
創建了一個新的作用域,您可以通過以下方式完成它:
<div ng-if="true" ng-init="model = { year: '2013'}">
您好澄清並找到解決方案,請您嘗試下面給出的解決方案
<script> var app = angular.module('myAngularApp', []); app.controller('myCtrl1', function ($scope) { }); app.controller('myCtrl2', function ($scope) { }); </script> <body ng-app="myAngularApp"> <div ng-controller="myCtrl1" ng-init="model = { year: '2012'}"> <a href="" ng-click="model.year = '2012'">2012</a> | <a href="" ng-click="model.year = '2013'">2013</a> <div>Showing {{ model.year }}</div> </div> <hr /> <div ng-controller="myCtrl2" ng-init="model = { year: '2013'}"> <a href="" ng-click="model.year = '2012'">2012</a> | <a href="" ng-click="model.year = '2013'">2013</a> <div>Showing {{ model.year }}</div> </div> </body>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.