Restangular javascript typeError stuff.put不是一个函数,但它是一个函数,而且它也在工作
我的重启语言设置中有奇怪的“无错误”。即使将错误记录到控制台,Stuff也可以正常工作 我使用了一种组件驱动的方法和一个解耦的重启服务工厂(clientService)。服务工厂被注入控制器并绑定到Restangular javascript typeError stuff.put不是一个函数,但它是一个函数,而且它也在工作,javascript,angularjs,angularjs-directive,restangular,Javascript,Angularjs,Angularjs Directive,Restangular,我的重启语言设置中有奇怪的“无错误”。即使将错误记录到控制台,Stuff也可以正常工作 我使用了一种组件驱动的方法和一个解耦的重启服务工厂(clientService)。服务工厂被注入控制器并绑定到this.clients=clientService 在clientrecord小部件的链接功能中,我获得一个特定的客户端,并观察另一个指令对client.keywords所做的更改 link: function (scope, element, attrs, ctrl) { var cid
this.clients=clientService代码>
在clientrecord小部件的链接功能中,我获得一个特定的客户端,并观察另一个指令对client.keywords
所做的更改
link: function (scope, element, attrs, ctrl) {
var cid = $stateParams.clientid;
scope.client = ctrl.clients.one(cid).get().$object;
scope.$watchCollection('client.keywords',
function (newval, oldval, scope) {
scope.client.put();
}
);
}
代码运行良好。关键字由另一个小部件编辑,检测到更改,发出put请求,关键字最终进入数据库。但chrome和firefox都会抛出一个错误:
"typeError: scope.client.put" is not a function"
目前,这只是一种烦恼,但它会进一步演变成令人讨厌的行为吗?我能修一下吗?我需要打字吗
该服务本身基本上是一条航线:
(function () {
'use strict';
angular
.module('client')
.factory('clientService', ClientService);
ClientService.$inject = ['Restangular','$stateParams'];
function ClientService(Restangular) {
return Restangular.service('routes/clients');
}
}());
尝试在watcher中的scope.client
上添加存在性检查(不是好的解决方案):
或在scope.client
创建(稍好的解决方案)之前:
更新:
或者(更好的方法),如果ctrl.clients
返回,则在数据加载后创建观察者。大概是这样的:
ctrl.clients.one(cid).get().then(function(data){
scope.client = data;
scope.$watchCollection(/* watcher; */);
});
但这只是猜测,因为我不知道ctrl.clients
结构 你能把剩下的代码贴出来吗?在最远处的服务least@AnidMonsur在前两个选项上面添加的服务工厂没有改变任何东西。ctrl.clients确实返回了一个承诺(因此使用.object方法获取商品),但当我尝试解决该承诺时,它停止工作。显然,我无法解析link函数中的承诺。坦率地说,我不知道这个承诺何时或如何得到解决——它只是神奇地起作用。我可能需要再看几遍文档;-)但是谢谢你的努力!
scope.client = [];
scope.client = ctrl.clients.one(cid).get().$object;
ctrl.clients.one(cid).get().then(function(data){
scope.client = data;
scope.$watchCollection(/* watcher; */);
});