我在AngularJS中有一个控制器,只有这个代码:
app.controller('PublishersController', function($scope, scaffold) {
scaffold($scope, {model: "Publishers"});
});
用这样的代码查看:
<tbody ng-repeat="publisher in items">
<tr ng-show="!ui.isEditing($index)">
<td>{{ publisher.name }}</td>
<td>
<ul>
<li ng-repeat="email in publisher.emails">{{ email }}</li>
</ul>
</td>
<td>
<a ng-click="ui.edit($index)">✎</a> |
<a ng-click="ui.remove($index)">✘</a>
</td>
</tr>
<tr ng-show="ui.isEditing($index)" ng-class="{error: publisher.$errors}">
<td>
<input type="text" ng-model="publisher.name" placeholder="Name" />
<ul ng-show="publisher.$errors" class="error">
<li ng-repeat="name in publisher.$errors.name">{{ name }}</li>
</ul>
</td>
<td>
<textarea type="text" ng-model="publisher.emails" placeholder="Emails" ng-list /></textarea><br/>
<i>(use `,` as separator)</i>
<ul ng-show="publisher.$errors" class="error">
<li ng-repeat="email in publisher.$errors.emails">{{ email }}</li>
</ul>
</td>
<td>
<a ng-click="ui.edit()" title="Save">☑</a> |
<a ng-click="ui.edit(false)" title="Cancel">☒</a>
</td>
</tr>
</tbody>
一切正常 - 我有列表和内联编辑。
所以 - 我修改了代码并制作了另一页 - 价格。所以,我得到了列表和内联编辑功能。
问题在于,当我按下“编辑”按钮并在之后我提交 - POST转到“/ prices”URL而不是“/ prices / {price_id}”。与出版商的情况一样。
那么......我做错了什么? ...(我找不到任何地方定义或设置此URL或其他...)
答案 0 :(得分:0)
在转储和测试日志之后,我发现了问题。
=== 1 ===
因此,对于Angular中的模型,该项目使用库angular-model.js
,其中定义了一个模块:
angular.module('ur.model', ...
之后 - 我们有一个使用该模型的脚手架模块。它位于angular-scaffold.js
,我们有:
var module = angular.module('ur.scaffold', ['ng', 'ur.model']);
module.factory('scaffold', ['model', ...
我的前端控制器使用这个脚手架模块。
=== 2 ===
有一个服务器端代码,它返回该项的JSON,并在model
模块中使用此JSON。此JSON必须具有此项的URL的属性,包括项ID。此URL用于查看项目或编辑项目 - 具体取决于您向其发送GET或POST请求的天气。
正如您所猜测的那样 - 服务器端没有在项目的JSON中返回此item-URL
属性。当我这样做时 - 问题就解决了。