誰かが私を助けることができるかどうかわかりませんが、私はこのエラーに長い間苦労してきました:
"Uncaught TypeError: Object <App.AssetType:ember408:2> has no method 'addArrayObserver'"
{{#linkTo}}
クリックするとこのエラーが発生するテンプレートを次に示します。
<div class="row">
<div class="twelve columns">
<h2>{{title}} - Assets</h2>
</div>
</div>
<div class="row">
<div class="three columns">
<ul>
{{#each assetTypes}}
{{#linkTo 'product.filter' this}}{{title}}{{/linkTo}}
{{/each}}
</ul>
</div>
<div class="nine columns">
{{outlet}}
</div>
</div>
およびアプリケーションコード
window.App = Ember.Application.create
rootElement: '.solution_products_documents'
App.ApplicationRoute = Ember.Route.extend
model: ->
App.Product.find()
App.ApplicationController = Ember.ArrayController.extend
sortProperties: ['title']
App.ProductRoute = Ember.Route.extend
model: (params) ->
App.Product.find params.product_id
setupController: (controller, model) ->
controller.set 'documents', model.get 'document_ids'
App.ProductController = Ember.ObjectController.extend
assetTypes: (->
docs = @get('documents')
docs.getEach 'asset_type_id'
).property('documents')
App.ProductFilterRoute = Ember.Route.extend
model: (params) ->
type = App.AssetType.find params.asset_type_id
product = this.modelFor 'product'
docs = product.get 'document_ids'
model = docs.filterProperty 'asset_type_id', type
App.ProductFilterController = Ember.ArrayController.extend()
App.Router.map ->
@route 'index', { path: '/' }
@resource 'product', { path: '/products/:product_id' }, ->
@route 'filter', { path: '/filter-by/:asset_type_id' }
##
# MODELS / EMBER-DATA
##
serializer = DS.JSONSerializer.create()
serializer.configure 'App.Document',
sideloadAs: 'documents'
serializer.configure 'App.AssetType',
sideloadAs: 'asset_types'
serializer.configure 'App.Product',
sideloadAs: 'products'
App.RestAdaptor = DS.RESTAdapter.extend
serializer: serializer
namespace: URL.slice 1
DS.Store.extend(
adapter: App.RestAdaptor
revision: 11
).create()
App.Product = DS.Model.extend
title: DS.attr 'string'
document_ids: DS.hasMany 'App.Document'
App.Document = DS.Model.extend
title: DS.attr 'string'
product_id: DS.belongsTo 'App.Product'
asset_type_id: DS.belongsTo 'App.AssetType'
App.AssetType = DS.Model.extend
title: DS.attr 'string'
document_ids: DS.hasMany 'App.Document'
######### /> END MODELS #################
#/products/4/filter-by/2
URLをアドレス バーに入力すると、すべてが計画どおりに機能します。{{#linkTo}}
このエラーが発生してコンテンツが表示されないのは、をクリックしたときだけです。App.ProductFilterRoute
ルート内のステートメントが実行されていないため、エラーが発生する前にスローdebugger
されますが、ページの更新中です。
どこを見ればいいのかわからないので、どんな助けや指示も大歓迎です。
アップデート:
{{#linkTo}}
ヘルパーを使用せず、代わりに手動で URL を作成する場合
<a href="#/products/{{unbound controller.content.id}}/filter-by/{{unbound this.id}}">{{title}}</a>
すべて正常に動作します。linkTo と手動の href の違いは何ですか?