亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AngularJS:如何在控制器之間傳遞變量?

AngularJS:如何在控制器之間傳遞變量?

AngularJS:如何在控制器之間傳遞變量?我有兩個角度控制器:function Ctrl1($scope) {     $scope.prop1 = "First";}function Ctrl2($scope) {     $scope.prop2 = "Second";     $scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like to do ideally}我不能用Ctrl1內Ctrl2因為它沒有定義。但是,如果我試圖像這樣傳遞它,…function Ctrl2($scope, Ctrl1) {     $scope.prop2 = "Second";     $scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like to do ideally}我犯了個錯誤。有人知道怎么做嗎?做Ctrl2.prototype = new Ctrl1();也失敗了。注:這些控制器不是相互嵌套的。
查看完整描述

3 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

跨多個控制器共享變量的一種方法是創建服務并將其注入任何你想要使用的控制器中。

簡單服務示例:

angular.module('myApp', [])
    .service('sharedProperties', function () {
        var property = 'First';

        return {
            getProperty: function () {
                return property;
            },
            setProperty: function(value) {
                property = value;
            }
        };
    });

在控制器中使用服務:

function Ctrl2($scope, sharedProperties) {
    $scope.prop2 = "Second";
    $scope.both = sharedProperties.getProperty() + $scope.prop2;}

這在這個博客(特別是第2課)。

我已經發現,如果要跨多個控制器綁定這些屬性,那么如果綁定到對象的屬性而不是原始類型(布爾、字符串、數字)以保留綁定引用,效果會更好。

例子:var property = { Property1: 'First' };而不是var property = 'First';.


最新情況:(希望)使事情更清楚這是一把小提琴它顯示了以下方面的一個例子:

  • 綁定到共享值的靜態副本(在myController 1中)

    • 綁定到原語(字符串)
    • 綁定到對象的屬性(保存到范圍變量)
  • 綁定到更新后更新UI的共享值(在myController 2中)

    • 綁定到返回原語(字符串)的函數
    • 綁定到對象的屬性
    • 雙向綁定到對象的屬性


查看完整回答
反對 回復 2019-06-13
  • 3 回答
  • 0 關注
  • 694 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號