javascript - angularjs服务改变,controller里面不同步改变
PHPz
PHPz 2017-04-10 14:38:10
[JavaScript讨论组]

创建了一个服务,打算在下面的几个controller里面公用这个服务,服务里面有默认的配置,然后还会从服务器通过ajax获取配置,但是获取的配置以后controller里面没有同步改变,页面上对应的内容也没有改变。
以下是服务代码:

var home=angular.module("Home",['ui.codemirror']);
//公共服务
home.factory("FormItem",function($http,$location){
    var items= {
        uniqueId:"",
        title:"",
        description:"",
        dtd:3,
        jsFramework:0,
        extraJs:[],
        extraJsUrlArr:[],
        html:"",
        js:"",
        css:""
    };
    var path=$location.$$absUrl.replace("http://"+$location.$$host+"/","");
    if(path!=""){
        $http.get("/api/get_fiddle/index/"+path).success(function(data){
            items=data;
            return items;
        });
    }
    return items;
});

具体网址为:http://jsfiddle.sinaapp.com/dvxr54cxsv。代码在home.js里面。想使用$watch监听,最终也没有弄成。

PHPz
PHPz

学习是最好的投资!

全部回复(2)
天蓬老师

controller不应该“大”
你这属于js的基础问题, 建议你先把js的异步概念搞清楚

嗯,你这整个应用只有一个页啊。一开始还有点误会,看来不光是异步,LZ你还该把对象的引用概念弄清楚。这就是另外一个问题了。唉,这里先照先前的思路来吧。
按照LZ给的页面稍微改了下

home.factory("FormItem",function($q, $http){
    var item = {};
    var deferred;
    var getItem = function(path) {
        //请求过就不再请求了
        if(deferred) {
            return deferred.promise;
        }
        deferred = $q.defer();
        if(path!="") {
            $http.get("/api/get_fiddle/index/"+path).success(function(data){
                deferred.resolve(data);
            });
        } else {
            deferred.resolve(item);
        }
        return deferred.promise;
    }
    return {
        getItem: getItem
    };
});

唉感觉越改越傻了 OTZ,不过难以理解LZ整个页面思路就先这样把

如果是js新手的话,不建议直接从angular入手学习

巴扎黑

已解决。创建了一个大的controller,然后把ajax的内容放到里面,然后通过$broadcast发送给了下面的controller。直接使用service的方法还是没有找到。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号