Note that there are some explanatory texts on larger screens.

plurals
  1. POUncaught TypeError: Cannot call method 'fineUploader' of undefined
    primarykey
    data
    text
    <p>What am I am doing wrong here? I am using ASP.NET MVC4 with Knockout.js &amp; Require.js.</p> <p>Here is all the javascript files:</p> <h2>app.contracts.js</h2> <pre><code>requirejs.config({ "baseUrl": "../../Scripts/app/administrator", "paths": { "app.contracts": "app.contracts", "ko": "../../lib/knockout-2.2.1", "jquery": "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min", "toastr": "../../lib/toastr", "moment": "../../lib/moment", "fineuploader": "../../lib/jquery.fineuploader-3.8.0", "model.contract": "../models/model.contract", "model.paymentterm": "../models/model.paymentterm", 'knockout.bindings': "../../lib/knockout.bindings", } }); // Load the main app module to start the app require(["main.contracts"], function (bs) { bs.run(); }); </code></pre> <h2>knockout.bindings.js</h2> <pre><code>define('knockout.bindings', ['ko', 'moment', 'fineuploader'], function (ko, moment, fineuploader) { ko.utils.contains = function (string, startsWith) { string = string || ""; if (startsWith.length &gt; string.length) return false; return string.toLowerCase().indexOf(startsWith.toLowerCase()) &gt;= 0; }; ko.bindingHandlers.date = { update: function (element, valueAccessor) { var value = valueAccessor(); var date = moment(value()); var strDate = date.format('LL'); $(element).text(strDate); } }; ko.bindingHandlers.contractuploader = { console.log(fineuploader); // this is undefined init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { $(element).fineUploader({ request: { endpoint: '/api/file', params: valueAccessor() }, deleteFile: { enabled: true, endpoint: '/api/file' } }) }, update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { // This will be called once when the binding is first applied to an element, // and again whenever the associated observable changes value. // Update the DOM element based on the supplied values here. } }; }); </code></pre> <h2>main.contracts.js</h2> <pre><code>define(['ko', 'contractsViewModel', 'model.contract', 'model.paymentterm', 'fineuploader'], function (ko, contractsViewModel, Contract, PaymentTerm, fineuploader) { var run = function () { var vm = new contractsViewModel(); var array = []; var parts = document.location.href.split("/"); var id = parts[parts.length - 1]; vm.clientId(id); var ptArray = []; $.getJSON("/api/Clients/GetByClientId/" + vm.clientId(), function (data) { vm.clientName(data.Name); var newItem = {}; newItem.Text = data.BusinessName; newItem.Value = true; vm.ownerTypes.push(newItem); }); $.getJSON("/api/Companies/GetMyCompany", function (data) { var newItem = {}; newItem.Text = data.Name; newItem.Value = false; vm.ownerTypes.push(newItem); }); $.getJSON("/api/paymentterms/", function (data) { $.each(data, function (key, val) { var c = new PaymentTerm(); c.PaymentTermId(val.PaymentTermId); c.Name(val.Name); c.IsActive(val.IsActive); ptArray.push(c); }); }).then(function () { vm.paymentTerms(ptArray); var contractArray = []; $.getJSON("/api/Contracts/getbyclientId/" + vm.clientId(), function (data) { $.each(data, function (key, val) { var c = new Contract(); c.ContractId(val.ContractId); c.IsActive(val.IsActive); contractArray.push(c); }); }).done(function () { vm.contracts(contractArray); }); }); ko.applyBindings(vm, document.getElementById('#administrator-contracts-view')); }; return { run: run }; }); </code></pre> <p>Here is the HTML:</p> <pre><code> @{ ViewBag.Title = "Contracts"; } @section scripts{ &lt;script data-main="../../Scripts/app/administrator/app.contracts" src="../../Scripts/lib/require.js"&gt;&lt;/script&gt; @Scripts.Render("~/bundles/knockoutjs") } &lt;div id="administrator-contracts-view"&gt; &lt;div class="contentList fullWidth"&gt; &lt;ul data-bind="foreach: filteredContracts"&gt; &lt;li data-bind="css: { 'edit': IsEditMode() }"&gt; &lt;div class="floatL docs"&gt; &lt;h3&gt;Documents:&lt;/h3&gt; &lt;div class="docDisplay"&gt; &lt;a title="Add documents" id="docAddHref" data-bind="contractuploader: { fileSystemId: 1 }" href="#" class="docAdd"&gt;&lt;/a&gt; &lt;a href="#" class="docIcon pdf"&gt;Doc Name&lt;/a&gt; &lt;a href="" class="docIcon docx"&gt;Doc Name&lt;/a&gt; &lt;a href="" class="docIcon xls"&gt;Doc Name&lt;/a&gt; &lt;/div&gt; &lt;!-- /.docDisplay --&gt; &lt;/div&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;!-- /.contentList --&gt; &lt;/div&gt; &lt;!-- /#administrator-contracts-view --&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload