angular.js - angular在service下寫的賦值在controller的$scope上監聽不到?
天蓬老师
天蓬老师 2017-05-15 16:51:05
0
2
639

例如賦值一個物件就無法雙向綁定,而賦值成字串什麼的就可以被監聽到。如果我必須賦值成物件怎麼辦才由辦法讓它能雙向綁定(我說的時點擊按鈕後賦的值不能綁定)

<body ng-app="app">

    <p ng-controller="loginCtrl">
        <pre>{{info}}</pre>
        <button ng-click="setvalue()">aaaa</button>
    </p>
    <p ng-controller="loginCtrl">{{info.isIn}}</p>
    <script type="text/javascript">
    var app = angular.module('app', []);

    app.factory('login', ['$timeout', function($timeout){
        var ret = {}

        ret.info = {
            isIn:false
        }
        //如果这里赋值成这样
        var dd = {
            isIn:'aaaaa'
        }
        $timeout(function() {
            ret.info.isIn = true;
        }, 1000);
        ret.setvalue = function(){
            //这里的修改就无法绑定,这事为什么
            ret.info = dd
            //ret.info.isIn=dd.Isin  //这样写就可以
        }
        return ret;
    }]);

    app.controller('loginCtrl', ['$scope', 'login', function($scope, login){

        $scope.info = login.info;
        $scope.setvalue = function(){
            login.setvalue('dddd')
        }
    }])
    </script>
</body>

因為伺服器上的資料就是一個jsonp對象,傳下來有很多。
各位大大求救啊~~,上面的程式碼引入angular就能跑了,幫我改正改正

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(2)
给我你的怀抱

雷雷

仅有的幸福

這個牽涉到的是js基礎知識,跟angular沒什麼關係了。簡單範例:

jsvar ret = {};
ret.info = {isIn:false};
var $scope = {};
$scope.info = ret.info;

//这里修改
ret.info = {isIn:true,xx:'xx'};
console.log(ret.info, $scope.info);// 结果是:Object {isIn: true, xx: "xx"} Object {isIn: false}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板