angular中控制器之間的傳值該怎麼實現

2021-07-12 07:57:03 字數 685 閱讀 5353

1、event

這裡可以有兩種方式,一種是$scope.$emit,然後通過監聽$rootscope的事件獲取引數;另一種是$rootscope.$broadcast,通過監聽$scope的事件獲取引數。

這兩種方法在最新版本的angular中已經沒有效能區別了,主要就是事件傳送的方向不同,可以按實際情況選擇。

2、service

可以建立乙個專用的事件service,也可以按照業務邏輯切分,將資料儲存在相應的service中,因為已經有人提過了就不贅述了。

建立乙個service來儲存資料,並且設定相應getter/setter,具體如下:

每個controller依賴service, call service.setter(...)

統一的service.setter(...)在改完資料後可以$emit('data-updated')

每個controller裡$on('data-updated', function())

3、$rootscope

這個方法可能會比較dirty一點,勝在方便,也就是把資料存在$rootscope中,這樣各個子$scope都可以呼叫,不過需要注意一下生命週期

4、直接使用$scope.$nextsibling及類似的屬性

另外就是通過本地儲存、全域性變數或者現代瀏覽器的postmessage來傳遞引數了,除非特殊情況,請避免這類方式。

angular 控制器之間的通訊

1,利用作用域的繼承方式 由於作用域的繼承是基於js的原型繼承方式,所以這裡分為兩種情況,當作用域上面的值為基本型別的時候,修改父作用域上面的值會 影響到子作用域,反之,修改子作用域只會影響子作用域的值,不會影響父作用域上面的值 如果需要父作用域與子作用域共享乙個值 的話,就需要用到後面一種,即作用...

angular 控制器之間的通訊

總的來說,angular控制器通訊的方式有三種 1,利用作用域繼承的方式。即子控制器繼承父控制器中的內容 2,基於事件的方式。即 on,emit,boardcast這三種方式 3,服務方式。寫乙個服務的單例然後通過注入來使用 利用作用域的繼承方式 由於作用域的繼承是基於js的原型繼承方式,所以這裡分...

angular中實現控制器之間傳遞引數的方式

在angular中,每個controller 控制器 都會有自己的 scope,通過為這個物件新增屬性賦值,就可以將資料傳遞給模板進行渲染,每個 scope只會在自己控制器內起作用,而有時候需要用到其他控制器中的資料,這個時候就要考慮到控制器之間引數的傳遞了。1.通過 rootscope傳參 首先,...